/**
*	@class Thread
*
*	@brief
*
*	@author William McVicar
*/

#pragma once

#ifndef __THREAD_H_INCLUDED__
#define __THREAD_H_INCLUDED__

//  Library Includes

//  Local Includes

//  Macros

//  Forward Declarations

//  Types

//  Constants

//  Prototypes

class Thread
{
	//Member Functions
public:

	Thread( void* _pFunction, void* _pUserData, unsigned int _uiProcessorNumber = 0, unsigned int _uiStackSize = 0 );
	~Thread();

	bool Pause();
	bool Resume();

protected: 

private: 

	//Member Variables
public:

protected: 

private: 

	void*		m_pThread;
	void*		m_pFunction;
	void*		m_pUserData;

	unsigned int	m_uiThreadID;
	unsigned int	m_uiProcessorNumber;
	unsigned int	m_uiStackSize;

};

#include "Thread.inl"

#endif //__THREAD_H_INCLUDED__
